Code reuse may improve the efficiency of software development. For example, many application programming interface (API) methods can be invoked and used in various programming contexts to complete respective tasks. As known, a third-party API library may contain hundreds or even thousands of API methods or functions. Furthermore, in a software development project, software engineers usually design and implement lots of methods as internal APIs for later invocation. As a result, the number of project-specific API methods may be huge as well.
In practice, unfortunately, the knowledge about API methods and their usages is often not well documented. When using API methods, there are obstacles caused by inadequate or absent resources or knowledge for learning those API methods. A software engineer knows that there is a creation API method(s) which might be helpful to complete his/her task. However, he/she often could not remember the exact API method or how to use it. Conventional solutions for code recommendation and code completion usually suffer from insufficient accuracy, utility and/or user friendliness.